Graph analysis is a type of data analysis where the dataset is modeled as a graph. Graph analysis is used to identify arbitrary relationships between data entities. By applying certain graph analysis algorithms on a graph, a user may be able to discover non-immediate insight about the dataset.
Currently, there are a number of graph databases, such as Neo4J and DEX. These graph databases provide basic management of graph data in persistent data storages. These graph databases provide a low-level application programming interface (API) that a user can use to access graph data from persistent storage. Therefore, if a user wants to run a graph algorithm on top of the graph data, then the user must come up with an implementation on top of the low-level API.
FIG. 1 is a block diagram that depicts this conventional approach for implementing graph algorithms. A user composes a manual implementation 110, which is an implementation of a graph algorithm. Implementation 110 makes numerous calls through data access API 120 to retrieve and manipulate data from graph data 130. Example calls are “getVertex(1003)” where ‘1003’ is an identifier for a particular vertex and “getOutGoingEdgesofVertex(25)” where ‘25’ is an identifier for a particular vertex.
There are two main issues with this graph database approach. First, graph analysis algorithms typically perform a lot of data accesses. Thus, this approach imposes significant overhead on execution time to go through the data access API for each data access. Second, it is challenging for users to come up with an efficient and/or parallel implementation of graph analysis algorithms on top of the low-level API.
Furthermore, if the implementation 110 is loaded on one computing device and graph data 130 is loaded on another computing device, then the latency between the two computing devices compounds each data access through data access API 120.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.